
//test

#include <stdio.h>
#include <stddef.h> //size_t
#include <stdlib.h>    //free使用的头文件
#include <string.h> //strdup
#include <curl/curl.h> //libcurl的头文件
#include "stt.h"
#include "robot.h"
#include "ttf.h"
#include "cJSON.h"

#define LINE_LEN 128

//输入，一次最多可转换128个字符
#define TEXT_LINE_LEN 128

//机器人回答的字符，一次最多可转换2048个字符
#define SPEAK_LINE_LEN 2048

//保存输入字符串的缓存区
char speak_line[SPEAK_LINE_LEN];

//保存输入字符串的缓存区
char line[LINE_LEN];


//保存输入字符串的缓存区
char text_line[TEXT_LINE_LEN];


//录音：arecord -t raw -r 16000 -f S16_LE -c 1 test.pcm
//播放：aplay -t raw -r 16000 -f S16_LE -c 1 test.pcm

int main()
{

    //人输入一段话 >>转换为文字
    //指向数据的指针
    char* audio = NULL;
    //音频文件大小
    size_t size;
    //读取pcm文件
    size = stt_load_file("test.pcm", &audio);
    if(size == 0)
    {
        return EXIT_FAILURE;
    }

    char* token = get_token("ohZQGov7stmOduZmNp6aGGI2", "Em0SA1AeeATBLs3AffCDgRHXh3vyWNi5");
    if (NULL == token)
    {
        free(audio);
        return EXIT_FAILURE;
    }

    //将语言数据发送到云服务器，等待响应报文
    char* stt_response = stt_send_request(token, audio, size);
    free(audio);
    if(NULL == stt_response)
    {
        return EXIT_FAILURE;
    }

    char* process_stt_response = stt_process_response(stt_response);
    puts(process_stt_response);

    //输入一段话 >> 图灵返回一段话 >> 将这段话转为语音
    char *apikey = "154adc903e1046b5a71228c653a96379";
    if(NULL == token)
    {
        return EXIT_FAILURE;
    }


    //构造请求报文讲话的
    char* tuling_request = robot_make_reqeire(apikey, process_stt_response);
    if(tuling_request == NULL)
    {
        return EXIT_FAILURE;
    }

    //将请求报文发送给图灵机器人
    char* tuling_response = robot_send_request(tuling_request);
    //printf("%s\n", response_1);
    char* tuling_tans_response = robot_trans_response(tuling_response);
    text2speech(token, tuling_tans_response);
    
    free(token);
    free(process_stt_response);

    return EXIT_SUCCESS;

}